package thread;

/**
 * 线程的第一种创建方法:继承Yhread并重写rum
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread my1=new MyThread1();
        Thread my2=new MyThread2();
        Thread my3=new MyThread3();
        /*
            启动线程要注意:
            调用线程的start方法而非直接调用run方法.
            当线程start方法调用后,线程就纳入到了线程调度器中被统一管理,当该线程第一次
            获取时间片后就会自动执行run方法.
         */
        my1.start();
        my2.start();
        my3.start();
    }
}

/**
 * 第一种创建线程方式的优点:
 * 结构简单,利于匿名内部类形式创建
 *
 * 缺点:
 * 1.存在继承冲突问题
 *  由于java是单继承的,这导致如果继承了Thread则无法再继承其他类,通常我们
 *  慢慢数为零复用方法,此时无法同时继承它们
 * 2.线程在热水与线程耦合在一起
 *  直线重写线程的run方法将任务直接定义在线程中,会导致线程的重用性差
 */
class MyThread1 extends Thread{
    public void run(){
        for (int i = 0; i <1500 ; i++) {
            System.out.println("蔡徐坤你在干嘛");

        }
    }
}

class MyThread2 extends Thread{
    public  void run(){
        for (int i = 0; i <1000 ; i++) {
            System.out.println("我在打篮球");
        }
    }
}

class MyThread3 extends Thread{
    public  void run(){
        for (int i=0;i<1000;i++){
            System.out.println("我在唱跳rap");
        }

    }
}